import sys

def main():
    n = int(input())  # 输入数组的长度
    a = list(map(int, input().split()))  # 输入数组的值
    a = [0] + a  # 将数组下标从 1 开始

    # 初始化最小素因子数组 d 和素数标记数组 prime
    N = 10010
    prime = [False] * N
    d = [0] * N
    d[1] = 1  # 1 的最小素因子是 1

    # 筛法求最小素因子
    for i in range(2, N):
        if not prime[i]:
            d[i] = i  # i 是素数，最小素因子是自身
            for j in range(i * i, N, i):
                prime[j] = True
                if d[j] == 0:
                    d[j] = i  # 更新 j 的最小素因子

    # 初始化 dp 数组，dp[i] 表示到达第 i 个位置的最大得分
    dp = [-sys.maxsize] * (n + 1)
    dp[1] = a[1]  # 初始状态：第 1 个位置的得分是 a[1]

    # 动态规划求解
    for i in range(1, n):
        # 枚举从 i 可以跳到的位置 j
        for j in range(i + 1, min(i + d[n - i], n) + 1):
            dp[j] = max(dp[j], dp[i] + a[j])

    # 输出结果：到达第 n 个位置的最大得分
    print(dp[n])

if __name__ == "__main__":
    main()